package com.zed.api.common.adpt;

import java.util.List;
import java.util.Set;

/**
 * 适配对象工厂资源库
 *
 * @author Zed
 */
public interface AdaptObjectFactoryRepository {

    /**
     * 按{@code hostType}查找可能适配的所有类型
     *
     * @param hostType {@link Class},宿主类型
     * @return {@link Set}
     */
    Set<Class<?>> getAdaptTypes(Class<?> hostType);

    /**
     * 根据{@code adaptType}和{@code hostType}查找所有支持适配的适配对象工厂
     *
     * @param adaptType {@link Class}
     * @param hostType  {@link Class}
     * @return {@link List}
     */
    <A> List<AdaptObjectFactory<A>> getAdaptObjectFactories(Class<A> adaptType, Class<?> hostType);
}
